<?php namespace Common\Api;

use Framework\Model\Db;

class User
{
	public function get($id)
	{
		static $sCache = [];

		if(isset($sCache[$id]))
		{
			return $sCache[$id];
		}

		//缓存别名
		$cache = S('user');
		if(empty($cache))
		{
			//缓存没有设置时，也就是第一次执行api时
			//初始为一个数组，后面好往里压数据
			$cache = [];
		}

		if(isset($cache[$id]))
		{
			return $cache[$id];
		}
		else
		{
			$Db = new Db('user');
			$user = $Db->where("id=$id")->first();
			//压入静态变量
			$sCache[$id]=$user;

			if($user)
			{
				$cache[$id]=$user;
				//1000人
				$size=1000;  //1002
				while(count($cache)>$size)
				{
					array_shift($cache);
				}
				S('user',$cache);
				return $user;
			}
		}
	}

	// //获取会员名
	// public function getName($id)
	// {
	// 	if($user = $this->get($id))
	// 	{
	// 		return $user['username'];
	// 	}
	// }
	public function __call($method,$params)
	{
		if(substr($method,0,3)=='get')
		{
			$name = strtolower(substr($method,3));

			if(empty($params))
			{
				//没有传第2个参数时，操作当前登录用户
				if(isset($_SESSION['id'])){
				array_unshift($params, $_SESSION['id']);
				}
			}
			$user = call_user_func_array([$this,'get'], $params);
			if($user)
			{
				if(isset($user[$name]))
				{
					return $user[$name];
				}
			}
		}
	}
}










